package com.cac.demo.newCode.sorting.service;

import com.cac.demo.util.adapter.ResponseMsg;
import com.cac.demo.newCode.sorting.dto.SortingTaskDTO;

import java.util.List;


public interface SortingTaskService {
    /**
     * 开始作业
     * @param sortingTaskDTOs
     * @return
     */
    ResponseMsg<Object> startSortingTask(List<SortingTaskDTO> sortingTaskDTOs);

    /**
     * AO分拣任务列表
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> AOSortingTaskPage(SortingTaskDTO sortingTaskDTO);

    /**
     * 清理等待任务
     * @return
     */
    ResponseMsg<Object> cleanWaitingTask();

    /**
     * 托盘查询
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> getToolCode(SortingTaskDTO sortingTaskDTO);

    /**
     * 查看缓存箱
     * @return
     */
    ResponseMsg<Object> viewWorkBin();

    /**
     * 缓存箱扫码
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> scanConfirmMaterialList(SortingTaskDTO sortingTaskDTO);

    /**
     * 缓存箱任务下发
     * @return
     */
    ResponseMsg<Object> materialDistribution();

    /**
     * 绑定托盘箱子
     * @return
     */
    ResponseMsg<Object> bindingWorkBin();

    /**
     * 扫码确认的物料分页
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> scanConfirmMaterialPage(SortingTaskDTO sortingTaskDTO);


    /**
     * 叫箱
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> callWorkBin(SortingTaskDTO sortingTaskDTO);

    /**
     * 相同图纸的物料
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> SameDrawingMaterial(SortingTaskDTO sortingTaskDTO);

    /**
     * 更换托盘
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> replaceToolCode(SortingTaskDTO sortingTaskDTO);

    /**
     * 保存备注
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg SortingSaveRemark(SortingTaskDTO sortingTaskDTO);

    /**
     * 手动更换托盘
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> replaceToolCodeByHand(SortingTaskDTO sortingTaskDTO);

    /**
     * 查看工作包规则
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> getPackCode(SortingTaskDTO sortingTaskDTO);

    /**
     * 工作包-查看物料信息
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> getMaterial(SortingTaskDTO sortingTaskDTO);

    /**
     * 暂停作业
     * @param sortingTaskDTOs
     * @return
     */
    ResponseMsg<Object> pauseSortingTask(List<SortingTaskDTO> sortingTaskDTOs);

    /**
     * 查看缓存箱和托盘
     * @return
     */
    ResponseMsg<Object> getWorkBinAndTool(List<SortingTaskDTO> sortingTaskDTOs);

    /**
     * 分拣暂停 用于流量控制
     *
     * @return
     */
    boolean getPauseTask();

    /**
     * PDA扫描分拣台
     * @param sortingTaskDTO
     * @return
     */
    ResponseMsg<Object> getConsole(SortingTaskDTO sortingTaskDTO);
}
